﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CasaBella.Entities;
using CasaBella.BL;
using Microsoft.Practices.Unity;

namespace CasaBella.UI
{
    public partial class FrmProducto : Form
    {
        [Dependency]
        public IProdBicicletasBL prodBiciBL { get; set; }

        [Dependency]
        public IProdColchonesBL prodColcBL { get; set; }

        [Dependency]
        public IProdMueblesBL prodMuebBL { get; set; }

        [Dependency]
        public IProdOtrosBL prodOtrosBL { get; set; }

        [Dependency]
        public IProdImportadosBL prodImportadosBL { get; set; }

        [Dependency]
        public IColorBL colorBL { get; set; }

        [Dependency]
        public IMaterialBL materialBL { get; set; }

        public FrmProducto()
        {
            InitializeComponent();
            this.BuilUp();
        }

        private void FrmProducto_Load(object sender, EventArgs e)
        {
            cargaData();
        }

        public void cargaData()
        {
            p_BICICLETASBindingSource.DataSource = prodBiciBL.GetAllFromProdBicicletas();
            p_COLCHONESBindingSource.DataSource = prodColcBL.GetAllFromProdColchones();
            p_MUEBLESBindingSource.DataSource = prodMuebBL.GetAllFromProdMuebles();
            p_OTROSBindingSource.DataSource = prodOtrosBL.GetAllFromProdOtros();
            p_IMPORTADOSBindingSource.DataSource = prodImportadosBL.GetAllFromProdImportados();
        }

        //boton buscar BICICLETAS
        private void btnBuscarBicicleta_Click(object sender, EventArgs e)
        {
            if (rbtnAro.Checked == true || rbtnDatosGenerales.Checked == true)
            {
                p_BICICLETASBindingSource.DataSource = prodBiciBL.GetAllFromProdBicicletasByCriterio(TxtCriterioBicicleta.Text);
                if (p_BICICLETASBindingSource.Count == 0)
                {
                    MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
             }
            else if(rbtnStock.Checked == true)
            {
                p_BICICLETASBindingSource.DataSource = (from c in prodBiciBL.GetAllFromProdBicicletasByCriterio(TxtCriterioBicicleta.Text)
                                                            where c.PRODUCTO.Stock<5
                                                            select c).ToList();
                if (p_BICICLETASBindingSource.Count == 0)
                {
                    MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
          }

        //evento buscar BICICLETAS
        private void TxtCriterioBicicleta_KeyDown(object sender, KeyEventArgs e)
        {
            if(e.KeyCode==Keys.Enter)
            {
                if (rbtnAro.Checked == true || rbtnDatosGenerales.Checked == true)
                {
                    p_BICICLETASBindingSource.DataSource = prodBiciBL.GetAllFromProdBicicletasByCriterio(TxtCriterioBicicleta.Text);
                    if (p_BICICLETASBindingSource.Count == 0)
                    {
                        MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                 }
                else if(rbtnStock.Checked == true)
                {
                    p_BICICLETASBindingSource.DataSource = (from c in prodBiciBL.GetAllFromProdBicicletasByCriterio(TxtCriterioBicicleta.Text)
                                                                where c.PRODUCTO.Stock<5
                                                                select c).ToList();
                    if (p_BICICLETASBindingSource.Count == 0)
                    {
                        MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
        }

        //boton buscar COLCHONES
        private void btnBuscarColchones_Click(object sender, EventArgs e)
        {
            if(rbtnDatosGeneralesColch.Checked==true)
            {
                p_COLCHONESBindingSource.DataSource = prodColcBL.GetAllFromProdColchonesByCriterio(txtCriterioColchones.Text);
                if(p_COLCHONESBindingSource.Count==0)
                {
                    MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if(rbtnStockColch.Checked==true)
            {
                p_COLCHONESBindingSource.DataSource = (from c in prodColcBL.GetAllFromProdColchonesByCriterio(txtCriterioColchones.Text)
                                                           where c.PRODUCTO.Stock<5
                                                           select c).ToList();
                if(p_COLCHONESBindingSource.Count==0)
                {
                    MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        //evento buscar COLCHONES
        private void txtCriterioColchones_KeyDown(object sender, KeyEventArgs e)
        {
            if(e.KeyCode==Keys.Enter)
            {
                if(rbtnDatosGeneralesColch.Checked==true)
                {
                    p_COLCHONESBindingSource.DataSource = prodColcBL.GetAllFromProdColchonesByCriterio(txtCriterioColchones.Text);
                    if(p_COLCHONESBindingSource.Count==0)
                    {
                        MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if(rbtnStockColch.Checked==true)
                {
                    p_COLCHONESBindingSource.DataSource = (from c in prodColcBL.GetAllFromProdColchonesByCriterio(txtCriterioColchones.Text)
                                                               where c.PRODUCTO.Stock<5
                                                               select c).ToList();
                    if(p_COLCHONESBindingSource.Count==0)
                    {
                        MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
        }

        //boton buscar MUEBLES
        private void btnBuscarMuebles_Click(object sender, EventArgs e)
        {
            if (rbtnDatosGeneralesMueb.Checked == true)
            {
                p_MUEBLESBindingSource.DataSource = prodMuebBL.GetAllFromProdMueblesByCriterio(txtCriterioMuebles.Text);
                if (p_MUEBLESBindingSource.Count == 0)
                {
                    MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (rbtnStockMueb.Checked == true)
            {
                p_MUEBLESBindingSource.DataSource = (from c in prodMuebBL.GetAllFromProdMueblesByCriterio(txtCriterioMuebles.Text)
                                                         where c.PRODUCTO.Stock<5
                                                         select c).ToList();
                if (p_MUEBLESBindingSource.Count == 0)
                {
                    MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        //evento buscar MUEBLES
        private void txtCriterioMuebles_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (rbtnDatosGeneralesMueb.Checked == true)
                {
                    p_MUEBLESBindingSource.DataSource = prodMuebBL.GetAllFromProdMueblesByCriterio(txtCriterioMuebles.Text);
                    if (p_MUEBLESBindingSource.Count == 0)
                    {
                        MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (rbtnStockMueb.Checked == true)
                {
                    p_MUEBLESBindingSource.DataSource = (from c in prodMuebBL.GetAllFromProdMueblesByCriterio(txtCriterioMuebles.Text)
                                                         where c.PRODUCTO.Stock < 5
                                                         select c).ToList();
                    if (p_MUEBLESBindingSource.Count == 0)
                    {
                        MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
        }

        //boton buscar OTROS
        private void btnBuscarOtros_Click(object sender, EventArgs e)
        {
            if (rbtnDatosGeneralesOtrs.Checked == true)
            {
                p_OTROSBindingSource.DataSource = prodOtrosBL.GetAllFromProdOtrosByCriterio(txtCriterioOtros.Text);
                if (p_OTROSBindingSource.Count == 0)
                {
                    MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (rbtnStockOtrs.Checked == true)
            {
                p_OTROSBindingSource.DataSource = (from c in prodOtrosBL.GetAllFromProdOtrosByCriterio(txtCriterioOtros.Text)
                                                       where c.PRODUCTO.Stock<5
                                                   select c).ToList();
                if (p_OTROSBindingSource.Count == 0)
                {
                    MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        //evento buscar OTROS
        private void txtCriterioOtros_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (rbtnDatosGeneralesOtrs.Checked == true)
                {
                    p_OTROSBindingSource.DataSource = prodOtrosBL.GetAllFromProdOtrosByCriterio(txtCriterioOtros.Text);
                    if (p_OTROSBindingSource.Count == 0)
                    {
                        MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (rbtnStockOtrs.Checked == true)
                {
                    p_OTROSBindingSource.DataSource = (from c in prodOtrosBL.GetAllFromProdOtrosByCriterio(txtCriterioOtros.Text)
                                                       where c.PRODUCTO.Stock < 5
                                                       select c).ToList();
                    if (p_OTROSBindingSource.Count == 0)
                    {
                        MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
        }

        //boton buscar IMPORTADOS
        private void btnBuscarImportado_Click(object sender, EventArgs e)
        {
            if (rbtnDatosGeneralesImport.Checked == true)
            {
                p_IMPORTADOSBindingSource.DataSource = prodImportadosBL.GetAllFromProdImportadosByCriterio(txtCriterioOtros.Text);
                if (p_IMPORTADOSBindingSource.Count == 0)
                {
                    MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (rbtnStockImport.Checked == true)
            {
                p_IMPORTADOSBindingSource.DataSource = (from c in prodImportadosBL.GetAllFromProdImportadosByCriterio(txtCriterioOtros.Text)
                                                   where c.PRODUCTO.Stock < 5
                                                   select c).ToList();
                if (p_IMPORTADOSBindingSource.Count == 0)
                {
                    MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        //evento buscar IMPORTADOS
        private void txtCriterioImportado_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                if (rbtnDatosGeneralesImport.Checked == true)
                {
                    p_IMPORTADOSBindingSource.DataSource = prodImportadosBL.GetAllFromProdImportadosByCriterio(txtCriterioOtros.Text);
                    if (p_IMPORTADOSBindingSource.Count == 0)
                    {
                        MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else if (rbtnStockImport.Checked == true)
                {
                    p_IMPORTADOSBindingSource.DataSource = (from c in prodImportadosBL.GetAllFromProdImportadosByCriterio(txtCriterioOtros.Text)
                                                            where c.PRODUCTO.Stock < 5
                                                            select c).ToList();
                    if (p_IMPORTADOSBindingSource.Count == 0)
                    {
                        MessageBox.Show("Producto no existente.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            FrmMttoProducto frm = new FrmMttoProducto();
            frm.NuevoProducto();
            frm.ShowDialog();
            cargaData();
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            var prodBicicleta = p_BICICLETASBindingSource.Current as P_BICICLETAS;
            var prodColchon = p_COLCHONESBindingSource.Current as P_COLCHONES;
            var prodMuebles = p_MUEBLESBindingSource.Current as P_MUEBLES;
            var prodOtros = p_OTROSBindingSource.Current as P_OTROS;
            var prodImportados = p_IMPORTADOSBindingSource.Current as P_IMPORTADOS;

            if (tabControl1.SelectedTab == tbBicicletas)
            {
                if (prodBicicleta != null)
                {
                    FrmMttoProducto frm = new FrmMttoProducto();
                    frm._prodBicicletas = prodBicicleta;
                    frm.EditarProducto();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar un Producto.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tbColchones)
            {
                if (prodColchon != null)
                {
                    FrmMttoProducto frm = new FrmMttoProducto();
                    frm._prodColchones = prodColchon;
                    frm.EditarProducto();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar un Producto.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tbMuebles)
            {
                if (prodMuebles != null)
                {
                    FrmMttoProducto frm = new FrmMttoProducto();
                    frm._prodMuebles = prodMuebles;
                    frm.EditarProducto();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar un Producto.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tbOtros)
            {
                if (prodOtros != null)
                {
                    FrmMttoProducto frm = new FrmMttoProducto();
                    frm._prodOtros = prodOtros;
                    frm.EditarProducto();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar un Producto.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabImportado)
            {
                if (prodImportados != null)
                {
                    FrmMttoProducto frm = new FrmMttoProducto();
                    frm._prodImportados = prodImportados;
                    frm.EditarProducto();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar un Producto.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

        //VALIDADNDO EL CAMPO CRITERIO SEGUN LOS RADIO BUTONS en BICICLETAS
        public void validarRbtnBicicletas()
        {
            if (rbtnDatosGenerales.Checked == true)
            {
                TxtCriterioBicicleta.Text = "";
            }
            else if (rbtnAro.Checked == true)
            {
                TxtCriterioBicicleta.Text = "";
            }
            else if (rbtnStock.Checked == true)
            {
                TxtCriterioBicicleta.Text = "";
            }
        }

        private void rbtnDatosGenerales_CheckedChanged(object sender, EventArgs e)
        {
            validarRbtnBicicletas();
        }

        private void rbtnAro_CheckedChanged(object sender, EventArgs e)
        {
            validarRbtnBicicletas();
        }

        private void rbtnStock_CheckedChanged(object sender, EventArgs e)
        {
            validarRbtnBicicletas();
        }

        private void rbtnDatosGeneralesColch_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtnDatosGeneralesColch.Checked == true)
            {
                txtCriterioColchones.Text = "";
            }
            else if(rbtnStockColch.Checked == true)
            {
                txtCriterioColchones.Text="";
            }
        }

        private void rbtnDatosGeneralesMueb_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtnDatosGeneralesMueb.Checked == true)
            {
                txtCriterioMuebles.Text = "";
            }
            else if (rbtnStockMueb.Checked == true)
            {
                txtCriterioMuebles.Text = "";
            }
        }

        private void rbtnDatosGeneralesOtrs_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtnDatosGeneralesOtrs.Checked == true)
            {
                txtCriterioOtros.Text = "";
            }
            else if (rbtnStockOtrs.Checked == true)
            {
                txtCriterioOtros.Text = "";
            }
        }

        private void rbtnDatosGeneralesImport_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtnDatosGeneralesImport.Checked == true)
            {
                txtCriterioImportado.Text = "";
            }
            else if (rbtnStockImport.Checked == true)
            {
                txtCriterioImportado.Text = "";
            }
        }

        //validando ingreso DATOS
        private void TxtCriterioBicicleta_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (rbtnAro.Checked == true || rbtnStock.Checked == true)
            {
                if (Char.IsNumber(e.KeyChar))
                {
                    e.Handled = false;
                }
                else if (Char.IsControl(e.KeyChar))
                {
                    e.Handled = false;
                }
                else if (Char.IsSeparator(e.KeyChar))
                {
                    e.Handled = false;
                }
                else
                {
                    e.Handled = true;
                }
            }
        }

        private void txtCriterioColchones_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (rbtnStockColch.Checked == true)
            {
                if (Char.IsNumber(e.KeyChar))
                {
                    e.Handled = false;
                }
                else if (Char.IsControl(e.KeyChar))
                {
                    e.Handled = false;
                }
                else if (Char.IsSeparator(e.KeyChar))
                {
                    e.Handled = false;
                }
                else
                {
                    e.Handled = true;
                }
            }
        }

        private void txtCriterioMuebles_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (rbtnStockMueb.Checked == true)
            {
                if (Char.IsNumber(e.KeyChar))
                {
                    e.Handled = false;
                }
                else if (Char.IsControl(e.KeyChar))
                {
                    e.Handled = false;
                }
                else if (Char.IsSeparator(e.KeyChar))
                {
                    e.Handled = false;
                }
                else
                {
                    e.Handled = true;
                }
            }
        }

        private void txtCriterioOtros_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (rbtnStockOtrs.Checked == true)
            {
                if (Char.IsNumber(e.KeyChar))
                {
                    e.Handled = false;
                }
                else if (Char.IsControl(e.KeyChar))
                {
                    e.Handled = false;
                }
                else if (Char.IsSeparator(e.KeyChar))
                {
                    e.Handled = false;
                }
                else
                {
                    e.Handled = true;
                }
            }
        }

        private void txtCriterioImportado_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (rbtnStockImport.Checked == true)
            {
                if (Char.IsNumber(e.KeyChar))
                {
                    e.Handled = false;
                }
                else if (Char.IsControl(e.KeyChar))
                {
                    e.Handled = false;
                }
                else if (Char.IsSeparator(e.KeyChar))
                {
                    e.Handled = false;
                }
                else
                {
                    e.Handled = true;
                }
            }
        }

        private void p_BICICLETASRadGridView_CurrentCellChanged(object sender, Telerik.WinControls.UI.CurrentCellChangedEventArgs e)
        {
            try
            {
                var currentBicicletas = p_BICICLETASBindingSource.Current as P_BICICLETAS;
                for (int count = 0; count < p_BICICLETASRadGridView.Rows.Count; count++)
                {
                    if (currentBicicletas != null)
                    {
                        PRODUCTO p = p_BICICLETASRadGridView.Rows[count].Cells[0].Value as PRODUCTO;
                        var und = (from c in prodBiciBL.GetAllFromProdBicicletas()
                                   where c.PBicicletasId.Equals(p.Codigo)
                                   select c).SingleOrDefault();
                        var color = colorBL.GetAllFromColorById(p.IdColor ?? default(Int32));
                        und.PRODUCTO = p;
                        und.PRODUCTO.COLOR = color;
                        p_BICICLETASRadGridView.Rows[count].Cells[7].Value = und.PRODUCTO.COLOR;
                        p_BICICLETASRadGridView.Rows[count].Cells[8].Value = und.PRODUCTO.Garantia;
                        p_BICICLETASRadGridView.Rows[count].Cells[12].Value = und.PRODUCTO.Stock;
                        p_BICICLETASRadGridView.Rows[count].Cells[9].Value = und.PRODUCTO.PCompra.ToString();
                        //p_BICICLETASRadGridView.Rows[count].Cells[8].Style.ForeColor = Color.Yellow;
                        p_BICICLETASRadGridView.Rows[count].Cells[10].Value = und.PRODUCTO.PTransporte.ToString();
                        //p_BICICLETASRadGridView.Rows[count].Cells[9].Style.Font = new System.Drawing.Font("Arial", 10, FontStyle.Underline);
                        p_BICICLETASRadGridView.Rows[count].Cells[11].Value = und.PRODUCTO.PVenta.ToString();
                        //p_BICICLETASRadGridView.Rows[count].Cells[10].Style.BackColor = Color.Blue;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }

        private void p_COLCHONESRadGridView_CurrentCellChanged(object sender, Telerik.WinControls.UI.CurrentCellChangedEventArgs e)
        {
            try
            {
                var currentColchones = p_COLCHONESBindingSource.Current as P_COLCHONES;
                for (int count = 0; count < p_COLCHONESRadGridView.Rows.Count; count++)
                {
                    if (currentColchones != null)
                    {
                        PRODUCTO p = p_COLCHONESRadGridView.Rows[count].Cells[0].Value as PRODUCTO;
                        var und = (from c in prodColcBL.GetAllFromProdColchones()
                                   where c.PColchonesId.Equals(p.Codigo)
                                   select c).SingleOrDefault();
                        var color = colorBL.GetAllFromColorById(p.IdColor ?? default(Int32));
                        und.PRODUCTO = p;
                        und.PRODUCTO.COLOR = color;
                        p_COLCHONESRadGridView.Rows[count].Cells[3].Value = und.PRODUCTO.COLOR;
                        p_COLCHONESRadGridView.Rows[count].Cells[4].Value = und.PRODUCTO.Garantia;
                        p_COLCHONESRadGridView.Rows[count].Cells[8].Value = und.PRODUCTO.Stock;
                        p_COLCHONESRadGridView.Rows[count].Cells[5].Value = und.PRODUCTO.PCompra.ToString();
                        //p_COLCHONESRadGridView.Rows[count].Cells[7].Style.BackColor = Color.Yellow;
                        p_COLCHONESRadGridView.Rows[count].Cells[6].Value = und.PRODUCTO.PTransporte.ToString();
                        //p_COLCHONESRadGridView.Rows[count].Cells[8].Style.BackColor = Color.Green;
                        p_COLCHONESRadGridView.Rows[count].Cells[7].Value = und.PRODUCTO.PVenta.ToString();
                        //p_COLCHONESRadGridView.Rows[count].Cells[9].Style.BackColor = Color.Cyan;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }

        private void p_MUEBLESRadGridView_CurrentCellChanged(object sender, Telerik.WinControls.UI.CurrentCellChangedEventArgs e)
        {
            try
            {
                var currentMuebles = p_MUEBLESBindingSource.Current as P_MUEBLES;
                for (int count = 0; count < p_MUEBLESRadGridView.Rows.Count; count++)
                {
                    if (currentMuebles != null)
                    {
                        PRODUCTO p = p_MUEBLESRadGridView.Rows[count].Cells[0].Value as PRODUCTO;
                        var und = (from c in prodMuebBL.GetAllFromProdMuebles()
                                   where c.PMueblesId.Equals(p.Codigo)
                                   select c).SingleOrDefault();
                        var color = colorBL.GetAllFromColorById(p.IdColor ?? default(Int32));
                        und.PRODUCTO = p;
                        und.PRODUCTO.COLOR = color;
                        p_MUEBLESRadGridView.Rows[count].Cells[5].Value = und.PRODUCTO.COLOR;
                        p_MUEBLESRadGridView.Rows[count].Cells[6].Value = und.PRODUCTO.Garantia;
                        p_MUEBLESRadGridView.Rows[count].Cells[10].Value = und.PRODUCTO.Stock;
                        p_MUEBLESRadGridView.Rows[count].Cells[7].Value = und.PRODUCTO.PCompra.ToString();
                        //p_MUEBLESRadGridView.Rows[count].Cells[9].Style.BackColor = Color.Yellow;
                        p_MUEBLESRadGridView.Rows[count].Cells[8].Value = und.PRODUCTO.PTransporte.ToString();
                        //p_MUEBLESRadGridView.Rows[count].Cells[10].Style.BackColor = Color.Green;
                        p_MUEBLESRadGridView.Rows[count].Cells[9].Value = und.PRODUCTO.PVenta.ToString();
                        //p_MUEBLESRadGridView.Rows[count].Cells[11].Style.BackColor = Color.Cyan;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }

        private void p_OTROSRadGridView_CurrentCellChanged(object sender, Telerik.WinControls.UI.CurrentCellChangedEventArgs e)
        {
            try
            {
                var currentOtros = p_OTROSBindingSource.Current as P_OTROS;
                for (int count = 0; count < p_OTROSRadGridView.Rows.Count; count++)
                {
                    if (currentOtros != null)
                    {
                        PRODUCTO p = p_OTROSRadGridView.Rows[count].Cells[0].Value as PRODUCTO;
                        var und = (from c in prodOtrosBL.GetAllFromProdOtros()
                                   where c.POtrosId.Equals(p.Codigo)
                                   select c).SingleOrDefault();
                        var color = colorBL.GetAllFromColorById(p.IdColor ?? default(Int32));
                        und.PRODUCTO = p;
                        und.PRODUCTO.COLOR = color;
                        p_OTROSRadGridView.Rows[count].Cells[4].Value = und.PRODUCTO.COLOR;
                        p_OTROSRadGridView.Rows[count].Cells[5].Value = und.PRODUCTO.Garantia;
                        p_OTROSRadGridView.Rows[count].Cells[9].Value = und.PRODUCTO.Stock;
                        p_OTROSRadGridView.Rows[count].Cells[6].Value = und.PRODUCTO.PCompra.ToString();
                        //p_OTROSRadGridView.Rows[count].Cells[7].Style.BackColor = Color.Yellow;
                        p_OTROSRadGridView.Rows[count].Cells[7].Value = und.PRODUCTO.PTransporte.ToString();
                        //p_OTROSRadGridView.Rows[count].Cells[8].Style.BackColor = Color.Green;
                        p_OTROSRadGridView.Rows[count].Cells[8].Value = und.PRODUCTO.PVenta.ToString();
                        //p_OTROSRadGridView.Rows[count].Cells[9].Style.BackColor = Color.Cyan;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }

        private void p_IMPORTADOSRadGridView_CurrentCellChanged(object sender, Telerik.WinControls.UI.CurrentCellChangedEventArgs e)
        {
            try
            {
                var currentImportados = p_IMPORTADOSBindingSource.Current as P_IMPORTADOS;
                for (int count = 0; count < p_IMPORTADOSRadGridView.Rows.Count; count++)
                {
                    if (currentImportados != null)
                    {
                        PRODUCTO p = p_IMPORTADOSRadGridView.Rows[count].Cells[0].Value as PRODUCTO;
                        var und = (from c in prodImportadosBL.GetAllFromProdImportados()
                                   where c.pImportadosId.Equals(p.Codigo)
                                   select c).SingleOrDefault();
                        var color = colorBL.GetAllFromColorById(p.IdColor ?? default(Int32));
                        und.PRODUCTO = p;
                        und.PRODUCTO.COLOR = color;
                        p_IMPORTADOSRadGridView.Rows[count].Cells[4].Value = und.PRODUCTO.COLOR;
                        p_IMPORTADOSRadGridView.Rows[count].Cells[5].Value = und.PRODUCTO.Garantia;
                        p_IMPORTADOSRadGridView.Rows[count].Cells[9].Value = und.PRODUCTO.Stock;
                        p_IMPORTADOSRadGridView.Rows[count].Cells[6].Value = und.PRODUCTO.PCompra.ToString();
                        //p_IMPORTADOSRadGridView.Rows[count].Cells[7].Style.BackColor = Color.Yellow;
                        p_IMPORTADOSRadGridView.Rows[count].Cells[7].Value = und.PRODUCTO.PTransporte.ToString();
                        //p_IMPORTADOSRadGridView.Rows[count].Cells[8].Style.BackColor = Color.Green;
                        p_IMPORTADOSRadGridView.Rows[count].Cells[8].Value = und.PRODUCTO.PVenta.ToString();
                        //p_IMPORTADOSRadGridView.Rows[count].Cells[9].Style.BackColor = Color.Cyan;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }

        private void p_BICICLETASRadGridView_Click(object sender, EventArgs e)
        {
            try
            {
                var currentBicicletas = p_BICICLETASBindingSource.Current as P_BICICLETAS;
                for (int count = 0; count < p_BICICLETASRadGridView.Rows.Count; count++)
                {
                    if (currentBicicletas != null)
                    {
                        PRODUCTO p = p_BICICLETASRadGridView.Rows[count].Cells[0].Value as PRODUCTO;
                        var und = (from c in prodBiciBL.GetAllFromProdBicicletas()
                                   where c.PBicicletasId.Equals(p.Codigo)
                                   select c).SingleOrDefault();
                        var color = colorBL.GetAllFromColorById(p.IdColor ?? default(Int32));
                        und.PRODUCTO = p;
                        und.PRODUCTO.COLOR = color;
                        p_BICICLETASRadGridView.Rows[count].Cells[7].Value = und.PRODUCTO.COLOR;
                        p_BICICLETASRadGridView.Rows[count].Cells[8].Value = und.PRODUCTO.Garantia;
                        p_BICICLETASRadGridView.Rows[count].Cells[12].Value = und.PRODUCTO.Stock;
                        p_BICICLETASRadGridView.Rows[count].Cells[9].Value = und.PRODUCTO.PCompra.ToString();
                        //p_BICICLETASRadGridView.Rows[count].Cells[8].Style.ForeColor = Color.Yellow;
                        p_BICICLETASRadGridView.Rows[count].Cells[10].Value = und.PRODUCTO.PTransporte.ToString();
                        //p_BICICLETASRadGridView.Rows[count].Cells[9].Style.Font = new System.Drawing.Font("Arial", 10, FontStyle.Underline);
                        p_BICICLETASRadGridView.Rows[count].Cells[11].Value = und.PRODUCTO.PVenta.ToString();
                        //p_BICICLETASRadGridView.Rows[count].Cells[10].Style.BackColor = Color.Blue;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }

        private void p_COLCHONESRadGridView_Click(object sender, EventArgs e)
        {
            try
            {
                var currentColchones = p_COLCHONESBindingSource.Current as P_COLCHONES;
                for (int count = 0; count < p_COLCHONESRadGridView.Rows.Count; count++)
                {
                    if (currentColchones != null)
                    {
                        PRODUCTO p = p_COLCHONESRadGridView.Rows[count].Cells[0].Value as PRODUCTO;
                        var und = (from c in prodColcBL.GetAllFromProdColchones()
                                   where c.PColchonesId.Equals(p.Codigo)
                                   select c).SingleOrDefault();
                        var color = colorBL.GetAllFromColorById(p.IdColor ?? default(Int32));
                        und.PRODUCTO = p;
                        und.PRODUCTO.COLOR = color;
                        p_COLCHONESRadGridView.Rows[count].Cells[3].Value = und.PRODUCTO.COLOR;
                        p_COLCHONESRadGridView.Rows[count].Cells[4].Value = und.PRODUCTO.Garantia;
                        p_COLCHONESRadGridView.Rows[count].Cells[8].Value = und.PRODUCTO.Stock;
                        p_COLCHONESRadGridView.Rows[count].Cells[5].Value = und.PRODUCTO.PCompra.ToString();
                        //p_COLCHONESRadGridView.Rows[count].Cells[7].Style.BackColor = Color.Yellow;
                        p_COLCHONESRadGridView.Rows[count].Cells[6].Value = und.PRODUCTO.PTransporte.ToString();
                        //p_COLCHONESRadGridView.Rows[count].Cells[8].Style.BackColor = Color.Green;
                        p_COLCHONESRadGridView.Rows[count].Cells[7].Value = und.PRODUCTO.PVenta.ToString();
                        //p_COLCHONESRadGridView.Rows[count].Cells[9].Style.BackColor = Color.Cyan;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }

        private void p_MUEBLESRadGridView_Click(object sender, EventArgs e)
        {
            try
            {
                var currentMuebles = p_MUEBLESBindingSource.Current as P_MUEBLES;
                for (int count = 0; count < p_MUEBLESRadGridView.Rows.Count; count++)
                {
                    if (currentMuebles != null)
                    {
                        PRODUCTO p = p_MUEBLESRadGridView.Rows[count].Cells[0].Value as PRODUCTO;
                        var und = (from c in prodMuebBL.GetAllFromProdMuebles()
                                   where c.PMueblesId.Equals(p.Codigo)
                                   select c).SingleOrDefault();
                        var color = colorBL.GetAllFromColorById(p.IdColor ?? default(Int32));
                        und.PRODUCTO = p;
                        und.PRODUCTO.COLOR = color;
                        p_MUEBLESRadGridView.Rows[count].Cells[5].Value = und.PRODUCTO.COLOR;
                        p_MUEBLESRadGridView.Rows[count].Cells[6].Value = und.PRODUCTO.Garantia;
                        p_MUEBLESRadGridView.Rows[count].Cells[10].Value = und.PRODUCTO.Stock;
                        p_MUEBLESRadGridView.Rows[count].Cells[7].Value = und.PRODUCTO.PCompra.ToString();
                        //p_MUEBLESRadGridView.Rows[count].Cells[9].Style.BackColor = Color.Yellow;
                        p_MUEBLESRadGridView.Rows[count].Cells[8].Value = und.PRODUCTO.PTransporte.ToString();
                        //p_MUEBLESRadGridView.Rows[count].Cells[10].Style.BackColor = Color.Green;
                        p_MUEBLESRadGridView.Rows[count].Cells[9].Value = und.PRODUCTO.PVenta.ToString();
                        //p_MUEBLESRadGridView.Rows[count].Cells[11].Style.BackColor = Color.Cyan;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }

        private void p_OTROSRadGridView_Click(object sender, EventArgs e)
        {
            try
            {
                var currentOtros = p_OTROSBindingSource.Current as P_OTROS;
                for (int count = 0; count < p_OTROSRadGridView.Rows.Count; count++)
                {
                    if (currentOtros != null)
                    {
                        PRODUCTO p = p_OTROSRadGridView.Rows[count].Cells[0].Value as PRODUCTO;
                        var und = (from c in prodOtrosBL.GetAllFromProdOtros()
                                   where c.POtrosId.Equals(p.Codigo)
                                   select c).SingleOrDefault();
                        var color = colorBL.GetAllFromColorById(p.IdColor ?? default(Int32));
                        und.PRODUCTO = p;
                        und.PRODUCTO.COLOR = color;
                        p_OTROSRadGridView.Rows[count].Cells[4].Value = und.PRODUCTO.COLOR;
                        p_OTROSRadGridView.Rows[count].Cells[5].Value = und.PRODUCTO.Garantia;
                        p_OTROSRadGridView.Rows[count].Cells[9].Value = und.PRODUCTO.Stock;
                        p_OTROSRadGridView.Rows[count].Cells[6].Value = und.PRODUCTO.PCompra.ToString();
                        //p_OTROSRadGridView.Rows[count].Cells[7].Style.BackColor = Color.Yellow;
                        p_OTROSRadGridView.Rows[count].Cells[7].Value = und.PRODUCTO.PTransporte.ToString();
                        //p_OTROSRadGridView.Rows[count].Cells[8].Style.BackColor = Color.Green;
                        p_OTROSRadGridView.Rows[count].Cells[8].Value = und.PRODUCTO.PVenta.ToString();
                        //p_OTROSRadGridView.Rows[count].Cells[9].Style.BackColor = Color.Cyan;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }

        private void p_IMPORTADOSRadGridView_Click(object sender, EventArgs e)
        {
            try
            {
                var currentImportados = p_IMPORTADOSBindingSource.Current as P_IMPORTADOS;
                for (int count = 0; count < p_IMPORTADOSRadGridView.Rows.Count; count++)
                {
                    if (currentImportados != null)
                    {
                        PRODUCTO p = p_IMPORTADOSRadGridView.Rows[count].Cells[0].Value as PRODUCTO;
                        var und = (from c in prodImportadosBL.GetAllFromProdImportados()
                                   where c.pImportadosId.Equals(p.Codigo)
                                   select c).SingleOrDefault();
                        var color = colorBL.GetAllFromColorById(p.IdColor ?? default(Int32));
                        und.PRODUCTO = p;
                        und.PRODUCTO.COLOR = color;
                        p_IMPORTADOSRadGridView.Rows[count].Cells[4].Value = und.PRODUCTO.COLOR;
                        p_IMPORTADOSRadGridView.Rows[count].Cells[5].Value = und.PRODUCTO.Garantia;
                        p_IMPORTADOSRadGridView.Rows[count].Cells[9].Value = und.PRODUCTO.Stock;
                        p_IMPORTADOSRadGridView.Rows[count].Cells[6].Value = und.PRODUCTO.PCompra.ToString();
                        //p_IMPORTADOSRadGridView.Rows[count].Cells[7].Style.BackColor = Color.Yellow;
                        p_IMPORTADOSRadGridView.Rows[count].Cells[7].Value = und.PRODUCTO.PTransporte.ToString();
                        //p_IMPORTADOSRadGridView.Rows[count].Cells[8].Style.BackColor = Color.Green;
                        p_IMPORTADOSRadGridView.Rows[count].Cells[8].Value = und.PRODUCTO.PVenta.ToString();
                        //p_IMPORTADOSRadGridView.Rows[count].Cells[9].Style.BackColor = Color.Cyan;
                    }
                }
            }
            catch (Exception)
            {
                MessageBox.Show("Error");
            }
        }

        private void btnStock_Click(object sender, EventArgs e)
        {
            var prodBicicleta = p_BICICLETASBindingSource.Current as P_BICICLETAS;
            var prodColchon = p_COLCHONESBindingSource.Current as P_COLCHONES;
            var prodMuebles = p_MUEBLESBindingSource.Current as P_MUEBLES;
            var prodOtros = p_OTROSBindingSource.Current as P_OTROS;
            var prodImportados = p_IMPORTADOSBindingSource.Current as P_IMPORTADOS;

            if (tabControl1.SelectedTab == tbBicicletas)
            {
                if (prodBicicleta != null)
                {
                    FrmAddStock frm = new FrmAddStock();
                    frm._prodBicicletas = prodBicicleta;
                    //frm.EditarProducto();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar un Producto.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tbColchones)
            {
                if (prodColchon != null)
                {
                    FrmAddStock frm = new FrmAddStock();
                    frm._prodColchones = prodColchon;
                    //frm.EditarProducto();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar un Producto.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tbMuebles)
            {
                if (prodMuebles != null)
                {
                    FrmAddStock frm = new FrmAddStock();
                    frm._prodMuebles = prodMuebles;
                    //frm.EditarProducto();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar un Producto.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tbOtros)
            {
                if (prodOtros != null)
                {
                    FrmAddStock frm = new FrmAddStock();
                    frm._prodOtros = prodOtros;
                    //frm.EditarProducto();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar un Producto.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else if (tabControl1.SelectedTab == tabImportado)
            {
                if (prodImportados != null)
                {
                    FrmAddStock frm = new FrmAddStock();
                    frm._prodImportados = prodImportados;
                    //frm.EditarProducto();
                    frm.ShowDialog();
                    cargaData();
                }
                else
                {
                    MessageBox.Show("Debe seleccionar un Producto.", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }

    }
}
